Traditional spreadsheet programs allow the user to establish an array of data cells displayed in an x-y format. Although the dimensional axis can be labelled, there is no internal relationship between a dimension and the cells that form the dimensional display. Accordingly, these programs do not support the rearrangement of spreadsheet dimensions. Further, the user is not able to easily rearrange elements within a dimension, or sort the data. For example, to move a column of data in these spreadsheets, the user typically must save the data, establish a new blank column in the spreadsheet in the desired new column location, and then copy the saved data into that column. Accordingly, the spreadsheets are very inflexible, requiring the user to take great care before establishing the spreadsheet template to prevent the difficulty of changing the template after it is established.
More recently there have been developed relational spreadsheet programs that represent the data in the cells using the spreadsheet edges (symbolic representation). These relational spreadsheets are more flexible in that they allow the user to rearrange the spreadsheet dimensions and reorder dimension elements within a dimension. However, such flexibility is at the expense of other important features, such as the ability to support cell topological formulas in which cells are represented by data in two or more other cells on the spreadsheet; because these programs allow the user to change the locations of the cells contributing to the topological formula, they are not able to support topological formulas unless the dimensions and dimension elements remain fixed. Further, both the traditional and relational spreadsheets require the spreadsheet template to be symmetrical by requiring the secondary dimension to have the same number of elements per primary dimension element, and in the same order for each primary element. Accordingly, both approaches lack the flexibility required to be a truly effective spreadsheet tool.